External DNS

개요

|600
쿠버네티스 외부에서 내가 원하는 도메인을 붙일 수 있도록 도와주는 툴.
클러스터 내부에서는 CoreDNS를 통해 내부에서 사용하는 DNS가 만들어진다.
이것은 내부에서만 사용할 수 있는 것이고, 인터넷 상에서 고유한 것도 아니다.
내가 고유한 도메인을 가지고 있을 때, 이 도메인을 클러스터의 네트워크 리소스에 연결하고자 할 때는 이 툴을 사용하면 된다.

image.png
다양한 dns 프로바이더에 대해 설정하는 방법이 나와있다.
클러스터 외부와 통신을 하는 컨트롤러가 설치되기 때문에, 이 친구가 관련한 작업을 할 수 있도록 권한 등의 추가 세팅을 해야 한다.

사용법

kubectl annotate service tetris "external-dns.alpha.kubernetes.io/hostname=tetris.$DOMAIN"

원하는 서비스인그레스에 이런 식으로 어노테이션을 달아주면 된다.
컨트롤러는 관련 리소스들을 감시하다 해당 어노테이션을 확인하면 설정된 대로 동작을 실행한다.

external-dns.alpha.kubernetes.io/ttl = 60s

ttl 시간도 설정할 수 있다.

ALB Controller와 사용할 때는 인그레스에 host 부분을 쓰는 것만으로도 레코드가 추가된다.[1]

관련 문서

이름 noteType created
External DNS knowledge 2025-02-26
2W - ALB Controller, External DNS published 2025-02-15

참고


  1. https://kubernetes-sigs.github.io/external-dns/latest/docs/tutorials/aws-load-balancer-controller/#ingress-examples ↩︎